dofile "lib/radical.lua" 

function tile(s) 
  return const.path.gfx.."game/night/"..s..".jpg"; 
end

function ct_tile(s) 
  return const.path.gfx.."game/city/"..s..".jpg"; 
end

function cm_tile(s) 
  return const.path.gfx.."game/common/"..s..".jpg"; 
end

function ka_tile(s) 
  return const.path.gfx.."game/ka/"..s..".jpg"; 
end


night = engine.state {
   _cops        = false --Kate saw cops
  ,_lock        = false --Kate destroyed gate lock
  ,_window      = false --Kate wrecked a window
  ,_yard1       = false --Kate found an exit to the first yard
  ,_switch1     = false --Kate used switch1 for the first time
  ,_switch1end  = false --Kate used switch1 for the second time
  ,_car         = false --Kate "opened" car
  ,_trunk       = false --Kate opened a car trunk
  ,_wrench      = false --Kate took a wrench
  ,_closeddoor  = false --The door is closed
  ,_openeddoor  = false --The door is opened
  ,_windowopen  = false --Kate opened a window
  ,_box         = false --Kate've thrown a box from the window
  ,_hatch       = false --Kate investigated hatch
  ,_hatchopen   = false --Kate opened a hatch
}

night_player = musplayer.player {
   mus("wind"):inside("start2"):loop()
  ,mus("wind"):inside("dom2"):loop():always()
  ,sfx("sudden"):inside("cops"):always()
  ,sfx("sudden"):inside("cops2"):always()
  ,sfx("sudden"):inside("cops3"):always()
  ,sfx("autofocus"):inside("capture"):always()
  ,mus("squeak"):inside("dom3"):loop():always()
  ,sfx("crush"):inside("ascend3"):always()
  ,mute():inside("ascend1"):fade(3000, 3000)
  ,mus("satiate_strings"):inside("yard1"):loop():always()
  ,sfx("cardoor"):inside("car_door_open"):always()
  ,sfx("cardoor"):inside("car_door_close"):always()
  ,sfx("trunk"):inside("incar_trunk_open"):always()
  ,sfx("trunk"):inside("incar_trunk_close"):always()
  ,sfx("footsteps"):inside("goup"):always()
  ,sfx("footsteps"):inside("godown"):always()
  ,sfx("boxbreak"):inside("jump1")
  ,mute():inside("midway4"):fade(3000, 3000)
  ,mus("satiate"):inside("midway4"):loop():when("cops3._seen")
  ,sfx("dooropen_echo"):inside("lastmile1")
  ,sfx("footsteps"):inside("sup1"):always()
  ,sfx("footsteps"):inside("sdown1"):always()
  ,sfx("footsteps"):inside("sup2"):always()
  ,sfx("footsteps"):inside("sdown2"):always()
  ,sfx("footsteps"):inside("sup3"):always()
  ,sfx("footsteps"):inside("sdown3"):always()
  ,mute():inside("ladder"):fade(3000, 3000)
  ,sfx("ladder"):inside("ladder"):always()
  ,mus("wind"):inside("roof1"):loop()
  ,mute():inside("final1")
  ,sfx("note"):inside("final1")
  ,sfx("softnote"):inside("final4")
  ,sfx("bam2"):inside("final6")
}

main = engine.main {
   start        = chain_ {
                     episode_("1-night")
                    ,musplayer_("night_player")
                    ,walk_("start1")
                  }
  ,finish       = gamefile_("1-deadhour/clinic.lua")
}

start1 = pause {
   time         = 2000
  ,next         = "start2"
}

start2 = pause {
   time         = 3000
  ,next         = "start3"
}

start3 = cutscene {
   tile         = { ka_tile "katewalk", 694, 100 }
  ,bounds       = { nil, nil, 680 }
  ,dsc          = [[Кате и раньше приходилось возвращаться домой в комендантский час. Полицейские патрули никогда не заезжали в их район,
                    Катя ни разу не видела пролетающее над улицами Око, как будто вся эта часть города была стерта с карты. Однако Катя
                    все равно беспокоилась из-за того, что так поздно возвращается домой -- со всем этим поиском врачей и лекарств, она
                    совсем забыла позвонить отцу, которого даже не предупредила, что может вернуться так поздно. Он ждет ее. Быть может,
                    у него начался очередной приступ, а дома есть только мепередин, который совсем не помогает. И на часах в гостиной уже -- 
                    комендантский час.]]
  ,next         = "start4"
}

start4 = cutscene {
   tile         = { ka_tile "katewalk", 694, 100 }
  ,bounds       = { nil, nil, 680 }
  ,dsc          = [[Но хотя бы на улице не было дождя, который, судя по залитым улицам, закончился совсем недавно. Но зато поднялся сильный,
                    почти штормовой ветер, а по затянутому черными тучами небу было видно, что вскоре вновь начнется ливень.]]
  ,next         = "street1"
}

street1 = scene {
   tile         = ct_tile "lantern2"
  ,enter        = set_checkpoint
  ,bounds       = { 230, 240, 660 }
  ,dsc          = [[Все фонари на улицах уже зажглись, и свет их кажется каким-то невыносимо ярким и словно бы ослепляет -- быть может, из-за
                    совсем не летнего сумрака, который нагнали грозовые тучи. Кате даже кажется, что с наступлением комендантского часа фонари
                    стали светить как-то иначе, как если бы во всей городской сети повысилось напряжение, и даже их Богом забытый район на окраине 
                    со старым городом охватывает это неестественное электрическое зарево. Какое-то время ночная улица даже кажется ей красивой. Но
                    порывистый ветер начинает сильно дуть в спину, точно подгоняя.^^
                  ]]
  ,obj          = { "street1_sign" }
  ,nav          = {
                     up = vw("Вверх по улице", "street2")
                    ,left = vw("В проулок", "slum1")
                  }
}

street1_sign = staticitem {
   dsc          = choose_ {
                     ["default"] = "На стене дома, мимо которого проходит Катя, висит {вывеска} с названием улицы."
                    ,["street1_sign._seen"] = "На стене дома, мимо которого проходит Катя, висит вывеска -- ул. Победы, номер дома разобрать невозможно."
                  }
}

street2 = scene {
   tile         = { ct_tile "lantern1", 400, 20 }
  ,bounds       = { nil, 260, 560 }
  ,dsc          = [[Фонари как будто заботливо освещают Кате дорогу домой. Осталось пройти лишь меньше квартала. Катя невольно прибавляет шаг.^^]]
  ,obj          = { "street2_sign" }
  ,nav          = {
                     up = vw("Вверх по улице", "street3")
                    ,down = vw("Вниз по улице", "street1")
                  }
}

street2_sign = staticitem {
   dsc          = choose_ {
                     ["default"] = "На стене дома, рядом с помятой водопроводной трубой, из которой все еще стекает пенистая вода, висит {вывеска} с названием улицы."
                    ,["street2_sign._seen"] = "На стене дома, рядом с помятой водопроводной трубой, из которой все еще стекает пенистая вода, висит вывеска -- ул. Победы, д. 30."
                  }
}

street3 = scene {
   tile         = ct_tile "lantern2"
  ,bounds       = { 230, 240, 660 }
  ,dsc          = [[Осталось совсем немного. Кате даже кажется, что она может разглядеть очертания своего дома вдалеке.^^]]
  ,obj          = { "street3_sign" }
  ,nav          = {
                     up = vw("Вверх по улице", "cops")
                    ,right = vw("В проулок", "dead_street1")
                    ,down = vw("Вниз по улице", "street2")
                  }
}

cops = scene {
   tile         = { tile "cops", 511, 354 }
  ,bounds       = { 100, 200, 600 }
  ,alwaysdsc    = true
  ,enter        = choose_ {
                     ["default"] = set_("night._cops")
                    ,["cops._seen"] = walk_("capture")
                  }
  ,dsc          = [[Катя даже не верит своим глазам. Вдалеке, по улице идут двое патрульных, куртки которых с фосфорными полосами предательски сверкают в свете фонарей.
                    К счастью, они пока не видят ее. Надо бы уходить отсюда поскорее.
                  ]]
  ,nav          = {
                     up = vw("Вверх по улице", "capture")
                    ,down = vw("Вниз по улице", "street3")
                  }
}

dead_street1 = scene {
   tile         = ct_tile "oldwall"
  ,dsc          = "Через этот проулок можно пройти на соседнюю улицу, и зайти к дому Кати с другой стороны. Так получается немного длиннее, и Катя обычно не ходит этим путем."
  ,alwaysdsc    = true
  ,bounds       = { 80 }
  ,nav          = {
                     up = vw("К соседней улице", "cops2")
                    ,down = vw("На главную улицу", "street3")
                  }
}

cops2 = scene {
   tile         = { tile "cops", 511, 354 }
  ,bounds       = { 100, 200, 600 }
  ,alwaysdsc    = true
  ,enter        = choose_ {
                     ["default"] = set_("night._cops")
                    ,["cops2._seen"] = walk_("capture")
                  }
  ,dsc          = [[Катя даже не верит своим глазам. Вдалеке, по улице идут двое патрульных, куртки которых с фосфорными полосами предательски сверкают в свете фонарей.
                    К счастью, они пока не видят ее. Надо бы уходить отсюда поскорее.
                  ]]
  ,nav          = {
                     up = vw("На соседнюю улицу", "capture")
                    ,down = vw("Вернуться назад", "dead_street1")
                  }
}

street3_sign = staticitem {
   dsc          = choose_ {
                     ["default"] = "На стене дома, мимо которого проходит Катя, висит {вывеска} с названием улицы."
                    ,["street3_sign._seen"] = "На стене дома, мимо которого проходит Катя, висит вывеска -- ул. Победы, д. 28."
                  }
}

capture = cutscene {
   tile         = tile "flash"
  ,bounds       = { 440, 260, 400 }
  ,dsc          = [[Катя даже не успела понять, что произошло. Темноту вдруг прорезал ослепительный луч фонаря, а полицейский что-то
                    крикнул и предупредительно поднял руку. Бежать уже не было смысла.]]
  ,next         = "sys_gameover"
}

slum1 = scene {
   tile         = tile "slum4"
  ,bounds       = { 225, nil, 600 }
  ,dsc          = [[Здесь не горят фонари и темно так, что Катя даже боится споткнуться.]]
  ,alwaysdsc    = true
  ,obj          = { "slum1_rocks" }
  ,nav          = {
                     up = vw("В проулок", "slum2")
                    ,right = vw("К дому справа", "dom1"):cnd("night._cops", "Вряд ли стоит бродить здесь. Лучше поскорее вернуться домой по главной улице.")
                    ,down = vw("На основую улицу", "street1")
                  }
}

slum1_rocks = staticitem {
   dsc          = choose_ {
                     ["default"] = "К тому же весь асфальт усыпан какими-то {обломками}."
                    ,["slum1_rocks._seen"] = "К тому же весь асфальт усыпан какими-то обломками кирпичей."
                  }
  ,act          = "Это просто кирпичная крошка. Но нужно быть осторожнее, не хватало еще растянуться посреди всей этой грязи."
}

dom1 = scene {
   tile         = ct_tile "oldwall"
  ,bounds       = { 100, nil, 750 }
  ,alwaysdsc    = true
  ,dsc          = [[В этом доме все еще живут люди, хотя Катя уже который год слышала, что их собирались переселять. Фундамент дал трещину, и здесь может быть 
                    новое обрушение. Однако никого это, судя по всему, не волнует.]]
  ,nav          = {
                     right = vw("К подъезду", "dom2")
                    ,left = vw("К проулку", "slum1")
                  }
}

dom2 = scene {
   tile         = ct_tile "oldwall2"
  ,bounds       = { 100, nil, 750 }
  ,dsc          = [[Дверь подъезда распахнута настежь, и даже на улице, несмотря на сильный ветер, чувствуется отвратительный гнилостный запах, который доносится оттуда.
                    Кате совсем не хочется заходить внутрь. Да и что ей там делать?^^]]
  ,obj          = { "dom2_sign" }
  ,nav          = {
                     up = vw("В подъезд", "dom3")
                    ,left = vw("К проулку", "dom1")
                  }
}

dom2_sign = staticitem {
   dsc          = choose_ {
                     ["default"] = "На стене, рядом с распахнутой дверью, висит {вывеска} с названием улицы."
                    ,["dom2_sign._seen"] = "На стене, рядом с распахнутой дверью, висит вывеска -- ул. Победы, д. 30."
                  }
}

dom3 = scene {
   tile         = { tile "entrance", 0, 20 }
  ,bounds       = { nil, 460, 900 }
  ,dsc          = [[Пахнет здесь и правда ужасно. Катя невольно зажимает нос, но это не помогает.^^]]
  ,obj          = { "boxes", "cloth" }
  ,nav          = {
                    down = vw("Выйти", "dom2")
                  }
}

boxes = staticitem {
   dsc          = [[У стены стоят какие-то картонные {коробки}, грязные и промасленные, однако кто-то аккуратно составил их в пирамиду, 
                    как свое имущество. Рядом с коробками валяется дырявый матрац, на котором лежит наполовину разорванная газета,
                    со следами то ли ржавчины, то ли крови.]]
  ,act          = "Кате совсем не хочется проверять, что в них лежит."
  ,showonce     = true
}

cloth = item {
   nam          = "Обрывок материи"
  ,dsc          = "Еще Катя замечает обрывок какой-то {материи}, похожей на кусок от разорванного ватного одеяла."
  ,tak          = "Катя, превозмогая отвращение, подобрала обрывок материи."
  ,ico          = ico "cloth"
  ,img          = ico "cloth-use"
  ,use          = chooseuse_ {
                     ["default"] = "Лучше этого не делать."
                    ,["slum3_window"] = chain_ { set_("night._cloth"), drop_("cloth"), sound_("items"), "Катя перекинула обрывок одеяла через окно. Теперь пролезть в подъезд будет безопаснее." }
                  }
}

slum2 = scene {
   tile         = tile "slum1"
  ,bounds       = { 260, 140, 600 }
  ,dsc          = [[Катя много лет не ходила по этой дороге. Раньше здесь можно было пройти на другую улицу через двор, но потом один из
                    старых кирпичных домов начал разрушаться, его выселили, однако дом так и остался стоять, точно городской
                    муниципалитет напрочь о нем забыл.^^]]
  ,obj          = { "slum1_paper" }
  ,nav          = {
                     up = vw("Дальше в проулок", "slum3"):cnd("night._cops", "Вряд ли стоит бродить здесь. Лучше поскорее вернуться домой по главной улице.")
                    ,down = vw("К основой улице", "slum1")
                  }
}

slum1_paper = staticitem {
   dsc          = "На потрескавшейся кирпичной стене одного из зданий висит наполовину содранное, промокшее от дождя {объявление}."
  ,act          = "Можно разобрать только самые первые слова -- Внимание! С первого июля этого года комендантский час начинается с..."
  ,showonce     = true
}

slum3 = scene {
   tile         = { tile "slum5", 0, 20 }
  ,bounds       = { 100, 220, 700 }
  ,dsc          = [[Из-за темноты Кате приходится идти вдоль стены, чтобы не упасть. Катя упирается в стену рукой, как слепая, и ладонь ее
                    вся покрылась грязью и каменной крошкой, точно эти столетние стены разрушаются от одного прикосновения.^^]]
  ,obj          = { "slum3_entrance", "slum3_lock", "slum3_window" }
  ,nav          = {
                     left = vw("Обойти дом", "left1")
                    ,down = vw("К основой улице", "slum2")
                  }
}

slum3_entrance = staticitem {
   dsc          = choose_ {
                     ["default"] = "Раньше здесь был въезд во двор для машин. Путь и сейчас преграждают покосившиеся, но все еще крепкие и массивные {ворота},"
                    ,["night._lock"] = "Раньше здесь был въезд во двор для машин. Путь и сейчас преграждают покосившиеся, но все еще крепкие и массивные {ворота}."
                  }
  ,act          = choose_ {
                     ["default"] = chain_ { sound_("gateclosed"), "Катя изо всех сил толкнула ворота, металлические створки задрожали, однако было видно, что они еще крепко держатся в петлях. Так просто открыть ворота не получится." }
                    ,["night._lock"] = chain_ { sound_("gateclosed"), "Катя толкнула ворота плечом, однако те по-прежнему никак не хотели открываться. Перекосившиеся створки точно намертво вросли в асфальт." }
                  }
}

slum3_lock = staticitem {
   dsc          = "на которые, к тому же, кто-то повесил амбарный {замок}."
  ,act          = "Замок старый и почти целиком покрыт ржавчиной. К тому же кто-то забил замочную скважину грязью -- вряд ли получится открыть этот замок ключом, даже если каким-то чудом Катя его найдет."
  ,cnd          = not_("night._lock")
}

slum3_window = staticitem {
   dsc          = choose_ {
                     ["default"] = "В мутное заплывшее {окно} неподалеку от ворот можно разглядеть грязный сумрак заброшенного подъезда."
                    ,["night._window and not night._cloth"] = "В разбитое {окно} неподалеку от ворот можно разглядеть грязный сумрак заброшенного подъезда."
                    ,["night._cloth"] = "Через разбитое {окно} неподалеку от ворот перекинута плотный почерневший от грязи обрывок ватного одеяла."
                  }
  ,act          = choose_ {
                     ["default"] = "Удивительно, но стекло почти целое. Наверняка его не сложно разбить -- было бы чем."
                    ,["night._window and not night._cloth"] = "Стекло разбито, однако из оконной рамы ото всюду торчат острые осколки. Если Катя полезет так, то сильно поранится."
                    ,["night._cloth"] = walk_("ascend1")
                  }
}

brick = item {
   nam          = "Кирпич"
  ,dsc          = "Под ногами у Кати валяется {кирпич}, которым она разбила стекло."
  ,img          = ico "brick-use"
  ,ico          = ico "brick"
  ,use          = chooseuse_ {
                     ["default"] = "Вряд ли это поможет."
                    ,["slum3_lock"] = chain_ { set_("night._lock"), sound_("smashextin"), drop_("brick"), "Катя несколько раз ударила по замку кирпичем, дужка замка вылетела из пазов, и тот с грохотом повалился на асфальт. Однако кирпич раскололся, и от него теперь нет никакого проку." }
                    ,["slum3_window"] = chain_ { set_("night._window"), sound_("glass"), drop_("brick"), "Катя из всех сил швырнула кирпич в окно. Раздался резкий, раскатистый грохот, и на асфальт полетели осколки стекла." }
                    ,["hallway1_window"] = "Не проще ли выйти через дверь?"
                    ,["slum3_entrance"] = "Вряд ли получится открыть ворота кирпичом."
                    ,["yard3_gates"] = "Вряд ли получится открыть ворота кирпичом."
                    ,["yard2_door"] = chain_ { sound_("smashextin"), "Катя ударила кирпичом по двери, однако ничего не произошло." }
                    ,["yard4_car_glass"] = chain_ { set_("night._car"), sound_("glass"), drop_("brick"), "Катя разбила кирпичом окно машины и открыла дверь изнутри." }
                  }
}

left1 = scene {
   tile         = ct_tile "oldwall"
  ,bounds       = { 80, nil, 760 }
  ,dsc          = [[Стена, которой касается Катя, чтобы не упасть в темноте, почти полностью лишена облицовки. Сейчас уже трудно поверить, что в этом доме вообще когда-либо жили люди.]]
  ,alwaysdsc    = true
  ,nav          = {
                     left = vw("Обойти дом", "left2")
                    ,right = vw("К воротам", "slum3")
                  }
}

left2 = scene {
   tile         = ct_tile "oldwall2"
  ,bounds       = { 80, nil, 760 }
  ,dsc          = [[С этой стороны дома хотя бы слабо светит один из уличных фонарей, и Катя уже не чувствует, что спускается в какую-то бессветную пропасть, засыпанную кирпичной крошкой.]]
  ,alwaysdsc    = true
  ,nav          = {
                     left = vw("Обойти дом", "left3")
                    ,right = vw("К воротам", "left1")
                  }
}

left3 = scene {
   tile         = tile "bricks"
  ,obj          = { "left3_bricks" }
  ,nav          = {
                    right = vw("К воротам", "left2")
                  }
}

left3_bricks = staticitem {
   dsc          = "Дальше прохода нет -- путь преграждает высокая бетонная стена. У стены свалены в кучу массивные силикатные {кирпичи}."
  ,act          = choose_ { 
                     ["default"] = chain_ { sound_("bricks"), take_("brick"), "Катя подобрала один кирпичей. Кирпич оказался неожиданно тяжелым, с острыми обломанными краями, и Кате пришлось нести его двумя руками." }
                    ,["inventory.has(brick)"] = "Таскать с собой два таких огромных кирпича будет тяжеловато."
                  }
}

ascend1 = cutscene {
   bounds       = { 260, 260, 500 }
  ,dsc          = [[Катя ухватилась руками за оконный проем и осторожно перелезла в заброшенный подъезд.]]
  ,next         = "ascend2"
}

ascend2 = slidedown {
   fps          = 20
  ,tile         = tile "windowpart"
  ,x            = 0
  ,y            = 0
  ,starty       = -160
  ,step         = 3
  ,next         = "ascend3"
}

ascend3 = tremor {
   fps          = 40
  ,x            = 640
  ,y            = 140
  ,step         = 4
  ,amp          = 20
  ,tile         = tile "window"
  ,next         = "ascend4"
}

ascend4 = cutscene {
   tile         = { tile "window", 640, 160 }
  ,bounds       = { nil, 180, 600 }
  ,dsc          = [[Катя чуть не упала, когда перебиралась через окно в подъезд. Пола было совсем не видно, а она не ожидала, что окно висит так высоко.
                    Придя в себя, она осмотрелась. В подъезде было еще одно окно -- полностью заляпанное грязью так, что в него ничего нельзя было разглядеть. 
                  ]]
  ,next         = "hallway1"
}

hallway1 = scene {
   tile         = { tile "window", 640, 160 }
  ,bounds       = { nil, 180, 600 }
  ,obj          = { "brick", "hallway1_window", "hallway1_door" }
  ,nav          = {
                    up = vw("Выйти", "yard1"):cnd("night._yard1", "Надо бы сначала найти выход.")
                  }
}

hallway1_window = staticitem {
   dsc          = "В заросшем грязью {окне} видны лишь очертания каких-то скрюченных ветвей."
  ,act          = "Катя всегда думала, что в этом заброшенном доме обитают бездомные, но, судя по всему, здесь давно уже не было ни одной живой души."
  ,showonce     = true
}

hallway1_door = matroska {
  { 
     dsc        = "Напротив Кати есть широкая двойная {дверь}, едва заметная в сумраке -- судя по всему, это выход во двор."
    ,act        = chain_ { sound_("doorclosed2"), "Просто так дверь открыть не получается. Катя толкает ее плечом, дверь вздрагивает, но не открывается, точно дверные створки срослись друг с другом." }
  },
  {
     dsc        = "{Дверь} во двор осела и не хочет просто так открываться."
    ,act        = chain_ { sound_("doorslam"), "Катя изо всех сил ударила дверь ногой, и та распахнулась." }
  },
  {
     dsc        = chain_ { set_("night._yard1"), "Дверь во двор {распахнута}." }
    ,act        = walk_("yard1")
  }
}

yard1 = scene {
   tile         = tile "slum4"
  ,bounds       = { 225, nil, 600 }
  ,dsc          = choose_ {
                     ["default"] = 
                        [[Все происходящее начинает напоминать Кате затягивающий ночной кошмар, когда ты уже начинаешь постепенно
                        осознавать, что спишь, но от этого становится только страшнее. Внутренний двор в ночном сумраке кажется совсем
                        небольшим, здесь не горит ни одного фонаря, Катя окружена со всех сторон слепыми стенами полуразрушенного
                        дома, над которыми нависли грозовые облака.]]
                    ,["yard1._seen"] = 
                        [[Внутренний двор в ночном сумраке кажется совсем
                        небольшим, здесь не горит ни одного фонаря, Катя окружена со всех сторон слепыми стенами полуразрушенного
                        дома, над которыми нависли грозовые облака.]]
                  }
  ,alwaysdsc    = true
  ,nav          = {
                     up = vw("Обойти двор", "yard2")
                    ,right = vw("Обойти двор", "yard3")
                    ,left = vw("Обойти двор", "yard4")
                    ,down = vw("В подъезд с разбитым окном", "hallway1")
                  }
}

yard3 = scene {
   tile         = { tile "slum5", 0, 20 }
  ,bounds       = { 100, 220, 700 }
  ,obj          = { "yard3_gates" }
  ,nav          = {
                    down = vw("Вернуться", "yard1")
                  }
}

yard3_gates = staticitem {
   dsc          = "Это выход со двора. Здесь есть лишь закрытые {ворота}, которые Катя так и не смогла открыть."
  ,act          = chain_ { sound_("gateclosed"), "Ворота по-прежнему не открываются." }
  ,showonce     = true
}

yard4 = scene {
   tile         = { tile "oldcar", 544, 353 }
  ,dsc          = [[В этой части двора совсем темно, впереди виднеются лишь какие-то бетонные блоки и перевернутая деревянная скамейка. 
                    Дальше Кате идти совсем не хочется. Весь асфальт залит водой, точно дождь над этим двором шел несколько дней без перерыва.
                    Ботинки Кати уже промокли насквозь.]]
  ,obj          = { "yard4_car", "yard4_car_glass", "yard4_car_trunk", "box" }
  ,nav          = {
                    down = vw("Вернуться", "yard1")
                  }
}

yard4_car = staticitem {
   dsc          = [[Прямо на тротуаре стоит старая, насквозь проржавевшая {машина}. Кажется, она не трогалась с места уже лет двадцать, не меньше.]]
  ,act          = choose_ {
                     ["default"] = chain_ { sound_("cardoorclosed"), "Дверь машины закрыта, просто так внутрь не попасть." }
                    ,["night._car"] = walk_("car_door_open")
                  }
}

car_door_open = pause {
   time         = 2000
  ,next         = "incar"
}
car_door_close = pause {
   time         = 2000
  ,next         = "yard4"
}

yard4_car_glass = staticitem {
   dsc          = "При этом однако почти все {стекла} у машины целые."
  ,act          = "Странно, что их не разбила местная шпана. С другой стороны, может, там и нечего брать."
  ,cnd          = not_("night._car")
}

yard4_car_trunk = staticitem {
   dsc          = "{Багажник} машины выкрашен матовой белой краской, однако поверх нее уже тоже проступает ржавчина."
  ,act          = choose_ {
                     ["default"] = chain_ { sound_("cardoorclosed"), "Багажник закрыт." }
                    ,["night._trunk"] = walk_("incar_trunk_open")
                  }
}

incar_trunk = scene {
   bounds       = { 260, 220, 480 }
  ,dsc          = [[Багажник завален грязными рваными тряпками и старыми книгами, насквозь промокшими, так, что они расползаются в руках.]]
  ,alwaysdsc    = true
  ,obj          = { "trunk_wheel", "wrench" }
  ,nav          = {
                    down = vw("Закрыть багажник", "incar_trunk_close")
                  }
}

incar_trunk_close = pause {
   time         = 1500
  ,next         = "yard4"
}
incar_trunk_open = pause {
   time         = 1500
  ,next         = "incar_trunk"
}

trunk_wheel = staticitem {
   dsc          = choose_ {
                     ["default"] = "Еще в багажнике лежит {докатка} на помятом диске"
                    ,["night._wrench"] = "Еще в багажнике лежит {докатка} на помятом диске."
                  }
  ,act          = "Вряд ли это может пригодиться."
  ,showonce     = true
}

wrench = item {
   nam          = "Гаечный ключ"
  ,dsc          = "и гаечный {ключ}."
  ,tak          = chain_ { set_("night._wrench"), "Катя взяла гаечный ключ." }
  ,img          = ico "wrench-use"
  ,ico          = ico "wrench"
  ,use          = chooseuse_ {
                     ["default"] = "Не стоит этого делать."
                    ,["yard2_door_lock"] = chain_ { set_("night._openeddoor"), sound_("doorslam"), "Катя просунула гаечный ключ между створками двери и навалилась на него всем телом. Дверь распахнулась." }
                    ,["hallway7_lock"] = chain_ { set_("night._hatchopen"), sound_("doorslam"), drop_("wrench"), "Катя просунула гаечный ключ под дужку замка и надавила на него всей силой. Дужка с треском вылетела из пазов, и люк открылся." }
                  }
}

incar = scene {
   tile         = { tile "carseat", 379, 426 }
  ,dsc          = [[В машине стоит тошнотворный запах сырости и гнилья, Кате даже приходится дышать через платок. Порванное и наспех 
                    проклеенное скотчем сидение страшно скрипит, стоит лишь едва пошевелиться.]]
  ,alwaysdsc    = true
  ,obj          = { "incar_paper", "incar_box", "incar_switch1", "incar_switch2" }
  ,nav          = {
                    left = vw("Выйти из машины", "car_door_close")
                  }
}

incar_paper = staticitem {
   dsc          = "На полу, под пассажирским сидением, лежит сверток старой измятой {бумаги}."
  ,act          = "Это просто старые газеты, ничего интересного."
  ,showonce     = true
}

incar_box = staticitem {
   dsc          = "Кажется, {бардачок} машины не закрыт."
  ,act          = "В бардачке ничего нет -- только обрывки бумаги и осколки стекла. Катя даже чуть не порезалась."
  ,showonce     = true
}

incar_switch1 = staticitem {
   dsc          = choose_ {
                     ["default"] = "На приборной панеле, чуть ниже руля, есть какой-то {рычаг}."
                    ,["night._switch1end"] = "На приборной панеле, чуть ниже руля, есть рычаг воздушной заслонки."
                  }
  ,act          = choose_ {
                     ["default"] = chain_ { set_("night._switch1"), sound_("click"), "Рычаг не сдвигается ни вверх, ни вниз. Катя потянула рычаг на себя, тот выдвинулся, однако ничего не произошло." }
                    ,["night._switch1"] = chain_ { set_("night._switch1end"), sound_("click"), "Катя несколько раз двигала рычаг, пока не вспомнила, что рычаг этот, видимо, управляет воздушной заслонкой карбюратора." }
                  }
}

incar_switch2 = staticitem {
   dsc          = "Под ногами у Кати, у самой двери, тоже есть длинный и странный {рычаг}."
  ,act          = choose_ {
                     ["default"] = chain_ { set_("night._trunk"), sound_("click"), "Катя дернула за рычаг. На первый взгляд ничего не произошло." }
                    ,["night._trunk"] = "Рычаг уже поднят."
                  }
}

box = item {
   nam          = "Фанерная коробка"
  ,dsc          = "Рядом с машиной валяется фанерная {коробка}, судя по виду, еще довольно крепкая."
  ,tak          = "Катя взяла фанерную коробку."
  ,img          = ico "box-use"
  ,ico          = ico "box"
  ,use          = chooseuse_ {
                     ["default"] = "В этом нет никакого смысла."
                    ,["hallway3_window"] = 
                        choose_ {
                           ["default"] = "Окно закрыто. Так ничего не получится."
                          ,["night._windowopen"] = chain_ { set_("night._box"), sound_("crack"), drop_("box"),
                              "Катя высунулась из окна и аккуратно сбросила вниз коробку, и там с глухим шумом упала в лужу прямо под окном. Теперь она может попробовать спрыгнуть из окна на эту коробку." }
                        }
                  }
}

yard2 = scene {
   tile         = tile "slum3"
  ,bounds       = { 280, nil, 580 }
  ,dsc          = "Здесь есть еще один подъезд."
  ,alwaysdsc    = true
  ,obj          = { "yard2_door", "yard2_door_lock" }
  ,nav          = {
                     up = vw("В подъезд", "hallway2"):cnd("night._openeddoor", "Дверь закрыта, в подъезд пройти не получится.")
                    ,down = vw("В центр двора", "yard1")
                  }
}

yard2_door = staticitem {
   dsc          = choose_ {
                     ["default"] = "{Дверь} подъезда закрыта."
                    ,["night._closeddoor and not night._openeddoor"] = "{Дверь} подъезда закрыта"
                    ,["night._openeddoor"] = "Дверь подъезда {открыта}."
                  }
  ,act          = choose_ {
                     ["default"] = chain_ { set_("night._closeddoor"), sound_("doorclosed2"), "Открыть дверь не получается. Катя тянет изо всех сил, но створки двери лишь чуть сдвигаются. Кажется, дверь закрыта на замок." }
                    ,["night._openeddoor"] = walk_("hallway2")
                  }
}

yard2_door_lock = staticitem {
   dsc          = "на {замок}."
  ,act          = "Если присмотреться, то можно заметить, что личинка замка свободно ходит в пазах. Если бы что-нибудь можно было просунуть в щель между створками двери и как следует надавить, то дверь, возможно, получилось бы открыть."
  ,cnd          = apply_("night._closeddoor and not night._openeddoor")
}

hallway2 = scene {
   tile         = { tile "light", 0, 20 }
  ,bounds       = { 120, 110, 700 }
  ,dsc          = choose_ {
                     ["default"] = 
                        [[Судя по спертому воздуху, пропитанному известкой, здесь давно уже не было ни души. К тому же подъезд не сквозной, выйти через него на улицу не получится.
                          Остается только подняться по лестнице на верхние этажи.]]
                    ,["hallway2._seen"] = "Этот подъезд не сквозной, выйти через него на улицу не получится."
                  }
  ,alwaysdsc    = true
  ,nav          = {
                     up = vw("Подняться по лестнице", "goup")
                    ,down = vw("Выйти из подъезда", "yard2")
                  }
}

goup = slideup {
   fps          = 1
  ,x            = 370
  ,y            = 400
  ,step         = 40
  ,tile         = tile "stairs"
  ,next         = "goup2"
}
goup2 = pause {
   time         = 3000
  ,next         = "hallway3"
}

godown = slidedown {
   fps          = 1
  ,x            = 370
  ,y            = 400
  ,starty       = 248
  ,step         = 40
  ,tile         = tile "stairs"
  ,next         = "godown2"
}
godown2 = pause {
   time         = 3000
  ,next         = "hallway2"
}

hallway3 = scene {
   tile         = tile "wall"
  ,bounds       = { 60 }
  ,dsc          = "В этом здании так душно, что у Кати начинает кружиться голова.^^"
  ,obj          = { "hallway3_window" }
  ,nav          = {
                     up = vw("Подняться вверх"):cnd("false", "Вверх подняться не получится, лестница частично обрушилась.")
                    ,down = vw("Спуститься вниз", "godown")
                  }
}

hallway3_window = staticitem {
   dsc          = choose_ {
                     ["default"] = "Здесь есть широкое {окно}, из которого виден узкий сумеречный проулок сразу за домом. Если бы получилось как-нибудь спуститься туда, то Катя смогла бы выйти на соседнюю улицу и обойти патруль."
                    ,["night._windowopen"] = "Здесь есть широкое открытое {окно}, из которого виден узкий сумеречный проулок сразу за домом."
                  }
  ,act          = choose_ {
                     ["default"] = chain_ { 
                                            set_("night._windowopen"), 
                                            sound_("dooropen"), 
                                            [[Катя повернула оконную ручку и, с силой потянув ее на себя, открыла окно. Даже не верится, что все получилось так 
                                              просто. Из открытого окна в лицо ей ударил холодный, пахнущий дождем ветер.]] 
                                          }
                    ,["night._windowopen and not night._box"] = "Здесь довольно высоко. Если просто спрыгнуть отсюда на асфальт, то Катя сильно расшибется. Вот если бы можно было как-то упростить спуск."
                    ,["night._box"] = walk_("jump1")
                  }
}

jump1 = pause {
   time         = 2000
  ,next         = "jump2"
}

jump2 = cutscene {
   bounds       = { 260, 220, 480 }
  ,dsc          = [[Катя выпрыгнула прямо на фанерную коробку, однако коробка развалилась под ее весом, и Катя сильно ушибла ногу. Однако она наконец 
                    выбралась. Из проулка есть выход на улицу, а там уже совсем не далека до дома.]]
  ,next         = "midway1"
}

midway1 = scene {
   tile         = tile "slum3"
  ,bounds       = { 280, nil, 580 }
  ,dsc          = "Проулок совсем узкий. Кате даже начинает казаться, что стены домов медленно сдвигаются, наступают на нее. Надо бы поскорее выбираться отсюда."
  ,alwaysdsc    = true
  ,obj          = { "midway1_door" }
  ,nav          = {
                     right = vw("Направо", "midway2")
                    ,left = vw("Налево", "midway3")
                  }
}

midway1_door = staticitem {
   dsc          = "^^В сумраке можно с трудом различить {дверь} еще одного подъезда."
  ,act          = choose_ {
                     ["default"] = "Но нет, хватит подъездов на сегодня."
                    ,["cops3._seen"] = walk_("lastmile1")
                  }
}

midway2 = scene {
   tile         = tile "slum4"
  ,bounds       = { 225, nil, 600 }
  ,dsc          = [[Здесь высокая бетонная стена. Дальше не пройти.]]
  ,alwaysdsc    = true
  ,nav          = {
                    left = vw("Вернуться", "midway1")
                  }
}

midway3 = scene {
   tile         = tile "slum2"
  ,bounds       = { 180, nil, 680 }
  ,dsc          = "Здесь есть выход из проулка. Катя даже видит впереди свет газовых фонарей."
  ,alwaysdsc    = true
  ,nav          = {
                     right = vw("В центр проулка", "midway1")
                    ,left = vw("На улицу", "midway4")
                  }
}

midway4 = scene {
   tile         = ct_tile "lantern2"
  ,bounds       = { 230, 240, 660 }
  ,dsc          = [[Наконец-то она на улице, где пахнет чистой дождевой водой, и повсюду горит яркий электрический свет. Кате почти
                    не верится, что она наконец-то выбралась из этого кошмара. Да и дома осталось совсем недалеко. Она просто обойдет
                    патруль и зайдет к совему дому с противоположной стороны.]]
  ,obj          = { "midway4_sign" }
  ,nav          = {
                     up = vw("Вверх по улице", "cops3")
                    ,down = vw("В проулок", "midway3")
                  }
}

midway4_sign = staticitem {
   dsc          = choose_ {
                     ["default"] = "На стене дома, мимо которого проходит Катя, висит {вывеска} с названием улицы."
                    ,["midway4_sign._seen"] = "На стене дома, мимо которого проходит Катя, висит вывеска -- ул. Вознесенского, д. 12."
                  }
}

cops3 = scene {
   tile         = { tile "cops", 511, 354 }
  ,bounds       = { 100, 200, 600 }
  ,alwaysdsc    = true
  ,enter        = choose_ {
                    ["cops3._seen"] = walk_("capture")
                  }
  ,dsc          = [[Это снова они! Впереди по улице идут двое патрульных, куртки которых поблескивают в свете фонарей.
                    К счастью, они пока не заметили Катю. Пройти по этой улице тоже не получится.
                  ]]
  ,nav          = {
                     up = vw("На соседнюю улицу", "capture")
                    ,down = vw("Вернуться назад", "midway4")
                  }
}

lastmile1 = cutscene {
   bounds       = { 260, 260, 480 }
  ,dsc          = [[У Кати больше не было выбора. Оставалось только надеяться на то, что она как-нибудь сможет обойти патрули через дома.]]
  ,next         = "hallway4"
}

hallway4 = scene {
   tile         = tile "wall2"
  ,bounds       = { 130, nil, 700 }
  ,dsc          = choose_ {
                     ["default"] = "К сожалению, этот подъезд тоже не сквозной. Остается лишь подниматься наверх. Впрочем, это ведь жилой дом. Может быть, кто-то поможет Кате?"
                    ,["hallway4._seen"] = "К сожалению, этот подъезд тоже не сквозной. Остается лишь подниматься наверх."
                  }
  ,alwaysdsc    = true
  ,nav          = {
                    up = vw("Вверх по лестнице", "sup1")
                  }
}

sup1 = slidedown {
   fps          = 1
  ,x            = 0
  ,y            = 500
  ,starty       = 209
  ,step         = 40
  ,tile         = tile "stairs2"
  ,next         = "hallway5"
}

sdown1 = slidedown {
   fps          = 1
  ,x            = 662
  ,y            = 500
  ,starty       = 209
  ,step         = 40
  ,tile         = tile "stairs3"
  ,next         = "hallway4"
}

hallway5 = scene {
   tile         = { tile "ceil1", 0, 20 }
  ,bounds       = { nil, 160 }
  ,obj          = { "hallway5_window", "hallway5_doors" }
  ,nav          = {
                     up = vw("Вверх по лестнице", "sup2")
                    ,down = vw("Вниз по лестнице", "sdown1")
                  }
}

hallway5_window = staticitem {
   dsc          = "Через {окно} пробивается свет электрических фонарей, из-за которого все вокруг кажется каким-то неестественно-белым."
  ,act          = "На окне -- массивные решетки. Выбраться через окно никак не получится."
  ,showonce     = true
}

hallway5_doors = staticitem {
   dsc          = "На этом этаже есть несколько {квартир}."
  ,act          = [[Поначалу Катя думает, что могла попросить жильцов впустить ее, дать ей переждать у них до рассвета, когда закончится комендантский час, 
                    однако она быстро отгоняет от себя эту мысль. Никто ее пустит, никто даже не откроет ей дверь.]]
  ,showonce     = true
}

sup2 = slidedown {
   fps          = 1
  ,x            = 0
  ,y            = 500
  ,starty       = 209
  ,step         = 40
  ,tile         = tile "stairs2"
  ,next         = "hallway6"
}

sdown2 = slidedown {
   fps          = 1
  ,x            = 662
  ,y            = 500
  ,starty       = 209
  ,step         = 40
  ,tile         = tile "stairs3"
  ,next         = "hallway5"
}

hallway6 = scene {
   tile         = { tile "ceil2", 0, 20 }
  ,bounds       = { nil, 160 }
  ,obj          = { "hallway6_window", "hallway6_doors" }
  ,nav          = {
                     up = vw("Вверх по лестнице", "sup3")
                    ,down = vw("Вниз по лестнице", "sdown2")
                  }
}

hallway6_window = staticitem {
   dsc          = "Через {окно} пробивается свет электрических фонарей."
  ,act          = "Здесь тоже решетки."
  ,showonce     = true
}

hallway6_doors = staticitem {
   dsc          = "На этом этаже есть несколько {квартир}."
  ,act          = "Нет, это никак не поможет."
  ,showonce     = true
}

sup3 = slidedown {
   fps          = 1
  ,x            = 0
  ,y            = 500
  ,starty       = 209
  ,step         = 40
  ,tile         = tile "stairs2"
  ,next         = "hallway7"
}

sdown3 = slidedown {
   fps          = 1
  ,x            = 662
  ,y            = 500
  ,starty       = 209
  ,step         = 40
  ,tile         = tile "stairs3"
  ,next         = "hallway6"
}

hallway7 = scene {
   tile         = { tile "ceil1", 0, 20 }
  ,bounds       = { nil, 160 }
  ,dsc          = "Это последний этаж. Дальше пути нет."
  ,obj          = { "hallway7_hatch", "hallway7_lock" }
  ,nav          = {
                     up = vw("Подняться на крышу", "ladder"):cnd("night._hatchopen", "Люк на крышу закрыт.")
                    ,down = vw("Вниз по лестнице", "sdown3")
                  }
}

hallway7_hatch = staticitem {
   dsc          = "На потолке Катя замечает {люк}, который, видимо, ведет на крышу."
  ,act          = choose_ {
                     ["default"] = chain_ { set_("night._hatch"), "К сожалению, люк закрыт." }
                    ,["night._hatchopen"] = walk_("ladder")
                  }
}

hallway7_lock = staticitem {
   dsc          = "Люк закрыт на небольшой навесной {замок}."
  ,act          = "Замок выглядит довольно хлипким."
  ,cnd          = apply_("night._hatch and not night._hatchopen")
}

ladder = slidedown {
   fps          = 1
  ,x            = 330
  ,starty       = -240
  ,y            = 0
  ,step         = 80
  ,tile         = tile "ladder"
  ,next         = "roof1"
}

roof1 = scene {
   tile         = { cm_tile "moon", 500, 80 }
  ,bounds       = { nil, 300 }
  ,dsc          = choose_ {
                     ["default"] =
                        [[Катя даже не может поверить в то, что это действительно с ней происходит. Ночные патрули никогда раньше не появлялись в этом районе.
                          А теперь она скрывается от полицейских посреди ночи, прячется от них по подъездам домов. И идти ей больше некуда. Она в западне на 
                          этой крыше. Не может она просто прождать здесь до утра?]]
                    ,["roof1._seen"] = "Нужно просто осмотреться. Наверняка должен быть какой-то выход."
                  }
  ,alwaysdsc    = true
  ,nav          = {
                     left = vw("Обойти крышу", "roof2")
                    ,right = vw("Обойти крышу", "roof3")
                  }
}

roof2 = scene {
   tile         = tile "edge"
  ,dsc          = choose_ {
                     ["default"] = 
                        [[Старый район внизу, неровно подсвеченным светом газовых ламп, кажется одновременно красивым и каким-то безжизненным, как будто во всех этих
                          домах на самом деле никто не живет. ^^Катя какое-то время стоит на самом краю. Ветер треплет ей волосы, она глубоко вдыхает свежий пахнущий
                          водой воздух. На лицо ей падают первые капли дождя. Внезапно она чувствует какое-то странное необъяснимое спокойствие. Этот город внизу --
                          неподвижен, точно неподвластен времени. Она здесь одна, ее никто не найдет. Если будет нужно, она прождет здесь всю ночь.]]
                    ,["roof2._seen"] = "Старый район внизу, неровно подсвеченным светом газовых ламп, кажется одновременно красивым и каким-то безжизненным, как будто во всех этих домах на самом деле никто не живет."
                  }
  ,alwaysdsc    = true
  ,nav          = {
                     right = vw("Отойти", "roof1")
                  }
}

roof3 = scene {
   tile         = tile "edge"
  ,obj          = { "roof3_ladder" }
  ,nav          = {
                     right = vw("Отойти", "roof1")
                  }
}

roof3_ladder = matroska {
   { dsc = "Катя замечает какие-то железные {поручни} у края крыши.", act = "Не может быть... Неужели это..." }
  ,{ dsc = "Это пожарная лестница! Она может {спуститься} вниз!", act = walk_("final1") }
}

final1 = pause {
   time         = 2500
  ,next         = "final2"
}

final2 = cutscene {
   bounds       = { 260, 220, 480 }
  ,dsc          = [[Катя спустилась вниз по пожарной лестнице и перешла на противоположную улицу. Каждую секунду ей казалось, что
                    она вот-вот столкнется с патрулем. Однако полицейские ей по пути не попадались, точно эти патрульные в сверкающих
                    одеждах только привиделись ей.]]
  ,next         = "final3"
}

final3 = cutscene {
   tile         = ka_tile "building"
  ,bounds       = { 280, nil, 550 }
  ,dsc          = [[Совсем скоро она добралась до своего дома. Она была так рада увидеть это старое двухэтажное строение, точно не была
                    здесь уже несколько лет.^^Катя зашла в подъезд, поднялась по лестнице, открыла ключами дверь...]]
  ,next         = "final4"
}

final4 = slideup {
   tile         = ka_tile "dad"
  ,x            = 393
  ,y            = 360
  ,endy         = 260
  ,step         = 2
  ,fps          = 20
  ,next         = "final5"
}

final5 = dialog {
   tile         = { ka_tile "dad", 393, 280 }
  ,src          = [[<phr a="-- Что с тобой, папа? Тебе снова плохо?" b="-- Ты слышала новости? Ты знаешь, что происходит?">
                      <phr a="-- Нет, а что произошло?" b="" walk="final6" />
                    </phr>]]
}

final6 = pause {
   time         = 4000
  ,next         = "main"
}